using System;
using System.Collections.Generic;
using DMS.BEs;

namespace ObjectFactories {
	public class CustomerFactory {

		private readonly Customer[] items = new Customer[60];
		private static CustomerFactory instance;

		private CustomerFactory() {
			items[1] = new Customer {FirstName = "Luís", LastName = "Gonçalves", Address = "Av. Brigadeiro Faria Lima, 2170", City = "São José dos Campos", State = "SP", Country = "Brazil", Email = "luisg@embraer.com.br", Fax = "+55 (12) 3923-5566", Phone = "+55 (12) 3923-5555", PostalCode = "12227-000", Company = "Embraer - Empresa Brasileira de Aeronáutica S.A.", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[2] = new Customer {FirstName = "Leonie", LastName = "Köhler", Address = "Theodor-Heuss-Straße 34", City = "Stuttgart", State = "", Country = "Germany", Email = "leonekohler@surfeu.de", Fax = "", Phone = "+49 0711 2842222", PostalCode = "70174", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[3] = new Customer {FirstName = "François", LastName = "Tremblay", Address = "1498 rue Bélanger", City = "Montréal", State = "QC", Country = "Canada", Email = "ftremblay@gmail.com", Fax = "", Phone = "+1 (514) 721-4711", PostalCode = "H2G 1A7", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[4] = new Customer {FirstName = "Bjørn", LastName = "Hansen", Address = "Ullevålsveien 14", City = "Oslo", State = "", Country = "Norway", Email = "bjorn.hansen@yahoo.no", Fax = "", Phone = "+47 22 44 22 22", PostalCode = "0171", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[5] = new Customer {FirstName = "František", LastName = "Wichterlová", Address = "Klanova 9/506", City = "Prague", State = "", Country = "Czech Republic", Email = "frantisekw@jetbrains.com", Fax = "+420 2 4172 5555", Phone = "+420 2 4172 5555", PostalCode = "14700", Company = "JetBrains s.r.o.", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[6] = new Customer {FirstName = "Helena", LastName = "Holý", Address = "Rilská 3174/6", City = "Prague", State = "", Country = "Czech Republic", Email = "hholy@gmail.com", Fax = "", Phone = "+420 2 4177 0449", PostalCode = "14300", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[7] = new Customer {FirstName = "Astrid", LastName = "Gruber", Address = "Rotenturmstraße 4, 1010 Innere Stadt", City = "Vienne", State = "", Country = "Austria", Email = "astrid.gruber@apple.at", Fax = "", Phone = "+43 01 5134505", PostalCode = "1010", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[8] = new Customer {FirstName = "Daan", LastName = "Peeters", Address = "Grétrystraat 63", City = "Brussels", State = "", Country = "Belgium", Email = "daan_peeters@apple.be", Fax = "", Phone = "+32 02 219 03 03", PostalCode = "1000", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[9] = new Customer {FirstName = "Kara", LastName = "Nielsen", Address = "Sønder Boulevard 51", City = "Copenhagen", State = "", Country = "Denmark", Email = "kara.nielsen@jubii.dk", Fax = "", Phone = "+453 3331 9991", PostalCode = "1720", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[10] = new Customer {FirstName = "Eduardo", LastName = "Martins", Address = "Rua Dr. Falcão Filho, 155", City = "São Paulo", State = "SP", Country = "Brazil", Email = "eduardo@woodstock.com.br", Fax = "+55 (11) 3033-4564", Phone = "+55 (11) 3033-5446", PostalCode = "01007-010", Company = "Woodstock Discos", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[11] = new Customer {FirstName = "Alexandre", LastName = "Rocha", Address = "Av. Paulista, 2022", City = "São Paulo", State = "SP", Country = "Brazil", Email = "alero@uol.com.br", Fax = "+55 (11) 3055-8131", Phone = "+55 (11) 3055-3278", PostalCode = "01310-200", Company = "Banco do Brasil S.A.", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[12] = new Customer {FirstName = "Roberto", LastName = "Almeida", Address = "Praça Pio X, 119", City = "Rio de Janeiro", State = "RJ", Country = "Brazil", Email = "roberto.almeida@riotur.gov.br", Fax = "+55 (21) 2271-7070", Phone = "+55 (21) 2271-7000", PostalCode = "20040-020", Company = "Riotur", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[13] = new Customer {FirstName = "Fernanda", LastName = "Ramos", Address = "Qe 7 Bloco G", City = "Brasília", State = "DF", Country = "Brazil", Email = "fernadaramos4@uol.com.br", Fax = "+55 (61) 3363-7855", Phone = "+55 (61) 3363-5547", PostalCode = "71020-677", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[14] = new Customer {FirstName = "Mark", LastName = "Philips", Address = "8210 111 ST NW", City = "Edmonton", State = "AB", Country = "Canada", Email = "mphilips12@shaw.ca", Fax = "+1 (780) 434-5565", Phone = "+1 (780) 434-4554", PostalCode = "T6G 2C7", Company = "Telus", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[15] = new Customer {FirstName = "Jennifer", LastName = "Peterson", Address = "700 W Pender Street", City = "Vancouver", State = "BC", Country = "Canada", Email = "jenniferp@rogers.ca", Fax = "+1 (604) 688-8756", Phone = "+1 (604) 688-2255", PostalCode = "V6C 1G8", Company = "Rogers Canada", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[16] = new Customer {FirstName = "Frank", LastName = "Harris", Address = "1600 Amphitheatre Parkway", City = "Mountain View", State = "CA", Country = "USA", Email = "fharris@google.com", Fax = "+1 (650) 253-0000", Phone = "+1 (650) 253-0000", PostalCode = "94043-1351", Company = "Google Inc.", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[17] = new Customer {FirstName = "Jack", LastName = "Smith", Address = "1 Microsoft Way", City = "Redmond", State = "WA", Country = "USA", Email = "jacksmith@microsoft.com", Fax = "+1 (425) 882-8081", Phone = "+1 (425) 882-8080", PostalCode = "98052-8300", Company = "Microsoft Corporation", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[18] = new Customer {FirstName = "Michelle", LastName = "Brooks", Address = "627 Broadway", City = "New York", State = "NY", Country = "USA", Email = "michelleb@aol.com", Fax = "+1 (212) 221-4679", Phone = "+1 (212) 221-3546", PostalCode = "10012-2612", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[19] = new Customer {FirstName = "Tim", LastName = "Goyer", Address = "1 Infinite Loop", City = "Cupertino", State = "CA", Country = "USA", Email = "tgoyer@apple.com", Fax = "+1 (408) 996-1011", Phone = "+1 (408) 996-1010", PostalCode = "95014", Company = "Apple Inc.", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[20] = new Customer {FirstName = "Dan", LastName = "Miller", Address = "541 Del Medio Avenue", City = "Mountain View", State = "CA", Country = "USA", Email = "dmiller@comcast.com", Fax = "", Phone = "+1 (650) 644-3358", PostalCode = "94040-111", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[21] = new Customer {FirstName = "Kathy", LastName = "Chase", Address = "801 W 4th Street", City = "Reno", State = "NV", Country = "USA", Email = "kachase@hotmail.com", Fax = "", Phone = "+1 (775) 223-7665", PostalCode = "89503", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[22] = new Customer {FirstName = "Heather", LastName = "Leacock", Address = "120 S Orange Ave", City = "Orlando", State = "FL", Country = "USA", Email = "hleacock@gmail.com", Fax = "", Phone = "+1 (407) 999-7788", PostalCode = "32801", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[23] = new Customer {FirstName = "John", LastName = "Gordon", Address = "69 Salem Street", City = "Boston", State = "MA", Country = "USA", Email = "johngordon22@yahoo.com", Fax = "", Phone = "+1 (617) 522-1333", PostalCode = "2113", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[24] = new Customer {FirstName = "Frank", LastName = "Ralston", Address = "162 E Superior Street", City = "Chicago", State = "IL", Country = "USA", Email = "fralston@gmail.com", Fax = "", Phone = "+1 (312) 332-3232", PostalCode = "60611", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[25] = new Customer {FirstName = "Victor", LastName = "Stevens", Address = "319 N. Frances Street", City = "Madison", State = "WI", Country = "USA", Email = "vstevens@yahoo.com", Fax = "", Phone = "+1 (608) 257-0597", PostalCode = "53703", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[26] = new Customer {FirstName = "Richard", LastName = "Cunningham", Address = "2211 W Berry Street", City = "Fort Worth", State = "TX", Country = "USA", Email = "ricunningham@hotmail.com", Fax = "", Phone = "+1 (817) 924-7272", PostalCode = "76110", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[27] = new Customer {FirstName = "Patrick", LastName = "Gray", Address = "1033 N Park Ave", City = "Tucson", State = "AZ", Country = "USA", Email = "patrick.gray@aol.com", Fax = "", Phone = "+1 (520) 622-4200", PostalCode = "85719", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[28] = new Customer {FirstName = "Julia", LastName = "Barnett", Address = "302 S 700 E", City = "Salt Lake City", State = "UT", Country = "USA", Email = "jubarnett@gmail.com", Fax = "", Phone = "+1 (801) 531-7272", PostalCode = "84102", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[29] = new Customer {FirstName = "Robert", LastName = "Brown", Address = "796 Dundas Street West", City = "Toronto", State = "ON", Country = "Canada", Email = "robbrown@shaw.ca", Fax = "", Phone = "+1 (416) 363-8888", PostalCode = "M6J 1V1", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[30] = new Customer {FirstName = "Edward", LastName = "Francis", Address = "230 Elgin Street", City = "Ottawa", State = "ON", Country = "Canada", Email = "edfrancis@yachoo.ca", Fax = "", Phone = "+1 (613) 234-3322", PostalCode = "K2P 1L7", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[31] = new Customer {FirstName = "Martha", LastName = "Silk", Address = "194A Chain Lake Drive", City = "Halifax", State = "NS", Country = "Canada", Email = "marthasilk@gmail.com", Fax = "", Phone = "+1 (902) 450-0450", PostalCode = "B3S 1C5", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[32] = new Customer {FirstName = "Aaron", LastName = "Mitchell", Address = "696 Osborne Street", City = "Winnipeg", State = "MB", Country = "Canada", Email = "aaronmitchell@yahoo.ca", Fax = "", Phone = "+1 (204) 452-6452", PostalCode = "R3L 2B9", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[33] = new Customer {FirstName = "Ellie", LastName = "Sullivan", Address = "5112 48 Street", City = "Yellowknife", State = "NT", Country = "Canada", Email = "ellie.sullivan@shaw.ca", Fax = "", Phone = "+1 (867) 920-2233", PostalCode = "X1A 1N6", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[34] = new Customer {FirstName = "João", LastName = "Fernandes", Address = "Rua da Assunção 53", City = "Lisbon", State = "", Country = "Portugal", Email = "jfernandes@yahoo.pt", Fax = "", Phone = "+351 (213) 466-111", PostalCode = "", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[35] = new Customer {FirstName = "Madalena", LastName = "Sampaio", Address = "Rua dos Campeões Europeus de Viena, 4350", City = "Porto", State = "", Country = "Portugal", Email = "masampaio@sapo.pt", Fax = "", Phone = "+351 (225) 022-448", PostalCode = "", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[36] = new Customer {FirstName = "Hannah", LastName = "Schneider", Address = "Tauentzienstraße 8", City = "Berlin", State = "", Country = "Germany", Email = "hannah.schneider@yahoo.de", Fax = "", Phone = "+49 030 26550280", PostalCode = "10789", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[37] = new Customer {FirstName = "Fynn", LastName = "Zimmermann", Address = "Berger Straße 10", City = "Frankfurt", State = "", Country = "Germany", Email = "fzimmermann@yahoo.de", Fax = "", Phone = "+49 069 40598889", PostalCode = "60316", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[38] = new Customer {FirstName = "Niklas", LastName = "Schröder", Address = "Barbarossastraße 19", City = "Berlin", State = "", Country = "Germany", Email = "nschroder@surfeu.de", Fax = "", Phone = "+49 030 2141444", PostalCode = "10779", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[39] = new Customer {FirstName = "Camille", LastName = "Bernard", Address = "4, Rue Milton", City = "Paris", State = "", Country = "France", Email = "camille.bernard@yahoo.fr", Fax = "", Phone = "+33 01 49 70 65 65", PostalCode = "75009", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[40] = new Customer {FirstName = "Dominique", LastName = "Lefebvre", Address = "8, Rue Hanovre", City = "Paris", State = "", Country = "France", Email = "dominiquelefebvre@gmail.com", Fax = "", Phone = "+33 01 47 42 71 71", PostalCode = "75002", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[41] = new Customer {FirstName = "Marc", LastName = "Dubois", Address = "11, Place Bellecour", City = "Lyon", State = "", Country = "France", Email = "marc.dubois@hotmail.com", Fax = "", Phone = "+33 04 78 30 30 30", PostalCode = "69002", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[42] = new Customer {FirstName = "Wyatt", LastName = "Girard", Address = "9, Place Louis Barthou", City = "Bordeaux", State = "", Country = "France", Email = "wyatt.girard@yahoo.fr", Fax = "", Phone = "+33 05 56 96 96 96", PostalCode = "33000", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[43] = new Customer {FirstName = "Isabelle", LastName = "Mercier", Address = "68, Rue Jouvence", City = "Dijon", State = "", Country = "France", Email = "isabelle_mercier@apple.fr", Fax = "", Phone = "+33 03 80 73 66 99", PostalCode = "21000", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[44] = new Customer {FirstName = "Terhi", LastName = "Hämäläinen", Address = "Porthaninkatu 9", City = "Helsinki", State = "", Country = "Finland", Email = "terhi.hamalainen@apple.fi", Fax = "", Phone = "+358 09 870 2000", PostalCode = "00530", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[45] = new Customer {FirstName = "Ladislav", LastName = "Kovács", Address = "Erzsébet krt. 58.", City = "Budapest", State = "", Country = "Hungary", Email = "ladislav_kovacs@apple.hu", Fax = "", Phone = "", PostalCode = "H-1073", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[46] = new Customer {FirstName = "Hugh", LastName = "O'Reilly", Address = "3 Chatham Street", City = "Dublin", State = "Dublin", Country = "Ireland", Email = "hughoreilly@apple.ie", Fax = "", Phone = "+353 01 6792424", PostalCode = "", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[47] = new Customer {FirstName = "Lucas", LastName = "Mancini", Address = "Via Degli Scipioni, 43", City = "Rome", State = "RM", Country = "Italy", Email = "lucas.mancini@yahoo.it", Fax = "", Phone = "+39 06 39733434", PostalCode = "00192", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[48] = new Customer {FirstName = "Johannes", LastName = "Van der Berg", Address = "Lijnbaansgracht 120bg", City = "Amsterdam", State = "VV", Country = "Netherlands", Email = "johavanderberg@yahoo.nl", Fax = "", Phone = "+31 020 6223130", PostalCode = "1016", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[49] = new Customer {FirstName = "Stanisław", LastName = "Wójcik", Address = "Ordynacka 10", City = "Warsaw", State = "", Country = "Poland", Email = "stanisław.wójcik@wp.pl", Fax = "", Phone = "+48 22 828 37 39", PostalCode = "00-358", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[50] = new Customer {FirstName = "Enrique", LastName = "Muñoz", Address = "C/ San Bernardo 85", City = "Madrid", State = "", Country = "Spain", Email = "enrique_munoz@yahoo.es", Fax = "", Phone = "+34 914 454 454", PostalCode = "28015", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[51] = new Customer {FirstName = "Joakim", LastName = "Johansson", Address = "Celsiusg. 9", City = "Stockholm", State = "", Country = "Sweden", Email = "joakim.johansson@yahoo.se", Fax = "", Phone = "+46 08-651 52 52", PostalCode = "11230", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[52] = new Customer {FirstName = "Emma", LastName = "Jones", Address = "202 Hoxton Street", City = "London", State = "", Country = "United Kingdom", Email = "emma_jones@hotmail.com", Fax = "", Phone = "+44 020 7707 0707", PostalCode = "N1 5LH", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[53] = new Customer {FirstName = "Phil", LastName = "Hughes", Address = "113 Lupus St", City = "London", State = "", Country = "United Kingdom", Email = "phil.hughes@gmail.com", Fax = "", Phone = "+44 020 7976 5722", PostalCode = "SW1V 3EN", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[54] = new Customer {FirstName = "Steve", LastName = "Murray", Address = "110 Raeburn Pl", City = "Edinburgh ", State = "", Country = "United Kingdom", Email = "steve.murray@yahoo.uk", Fax = "", Phone = "+44 0131 315 3300", PostalCode = "EH4 1HH", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[55] = new Customer {FirstName = "Mark", LastName = "Taylor", Address = "421 Bourke Street", City = "Sidney", State = "NSW", Country = "Australia", Email = "mark.taylor@yahoo.au", Fax = "", Phone = "+61 (02) 9332 3633", PostalCode = "2010", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[56] = new Customer {FirstName = "Diego", LastName = "Gutiérrez", Address = "307 Macacha Güemes", City = "Buenos Aires", State = "", Country = "Argentina", Email = "diego.gutierrez@yahoo.ar", Fax = "", Phone = "+54 (0)11 4311 4333", PostalCode = "1106", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(4)};
			items[57] = new Customer {FirstName = "Luis", LastName = "Rojas", Address = "Calle Lira, 198", City = "Santiago", State = "", Country = "Chile", Email = "luisrojas@yahoo.cl", Fax = "", Phone = "+56 (0)2 635 4444", PostalCode = "", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(5)};
			items[58] = new Customer {FirstName = "Manoj", LastName = "Pareek", Address = "12,Community Centre", City = "Delhi", State = "", Country = "India", Email = "manoj.pareek@rediff.com", Fax = "", Phone = "+91 0124 39883988", PostalCode = "110017", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
			items[59] = new Customer {FirstName = "Puja", LastName = "Srivastava", Address = "3,Raj Bhavan Road", City = "Bangalore", State = "", Country = "India", Email = "puja_srivastava@yahoo.in", Fax = "", Phone = "+91 080 22289999", PostalCode = "560001", Company = "", SupportRepresentant = EmployeeFactory.GetByOriginalId(3)};
		}

		static public void Reset() {
			instance=null;
		}

		static public CustomerFactory GetInstance() {
			if (instance==null) instance = new CustomerFactory();
		return instance;
		}

		static public IList<Customer> GetAll() {
			return GetInstance().items;
		}

		static public Customer GetByOriginalId(int? id)
		{
			return id.HasValue ? GetInstance().items[id.Value] : null;
		}
	}
}
